struct Node
{
      public:
             int data;
             Node *left;
             Node *right;
};

class BSTree
{
      private:
              void insert(Node **root, int value);
              void inorderDisplay(Node *root);
              void preorderDisplay(Node *root);
              void postorderDisplay(Node *root);
              bool isFoundValue(Node *root, int value);
              int findMinValue(Node *root);
              int findMaxValue(Node *root);
              int KthSmallestValue(Node *root, int k, int count);
      public:
             Node *root;
             BSTree()
             {
                     root = NULL;
             }
             void insert(int value);
             void inorderDisplay();
             void preorderDisplay();
             void postorderDisplay();
             bool isFoundValue(int value);
             int findMinValue();
             int findMaxValue();
             int KthSmallestValue(int k);
};
